

package futbol.tacticas.concursantes2007.AlfArgentin;

import futbol.tacticas.*;
import java.awt.*;
import java.awt.geom.*;


/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Licencia GPL</p>
 *
 * <p>Company: </p>
 * @author Alfredo Garcia Woods
 * @version 1.0
 */
public class Arquero implements IJugador{

    double posicionFijaX;
    double posicionFijaY;
    int yoJugador=0;

    /**
     * Arquero
     *
     * @param num int
     * @param posicionFijaX double
     * @param posicionFijaY double
     */
    public Arquero(int num,double posicionFijaX,double posicionFijaY) {
        yoJugador=num;
        this.posicionFijaX=posicionFijaX;
        this.posicionFijaY=posicionFijaY;
    }


    /**
     * getjugador
     *
     * @return int
     */
    public int getjugador(){
        return yoJugador;
    }


    /**
     * getComandoMovimiento
     *
     * @param sj SituacionJugadores
     * @return Comando
     */
    public Comando getComandoMovimiento(SituacionJugadores sj){
       Point bola=sj.getBola();
        int nJug=sj.getMasCercanoDeBola();
        if(nJug==yoJugador){//dirigirse a la pelota
            return new ComandoIrA(yoJugador,bola.getX(), bola.getY());
        } else{
            //Movimiento en el eje Y ==la bola
            int y=(int)(bola.getY()/2);
            if (y<-30) y=-30;
            if (y>30) y=30;
            return new ComandoIrA(yoJugador,posicionFijaX, y);
        }
    }

    /**
     * getComandoTiro
     *
     * @param sj SituacionJugadores
     * @return Comando
     */
    public Comando getComandoTiro(SituacionJugadores sj){
    //un simple despeje a una posicion fija
         Point jugadores[]=sj.getMisJugadores();
        Point contrarios[]=sj.getContrario();

        boolean despejarDeCostado=false;
        for (int i = 0; i < contrarios.length; i++) {
            Point point = contrarios[i];
            if(point.getX()<-15){
                despejarDeCostado=true;
            }
        }

        if(despejarDeCostado){

            ComandoGolpearBola comand= new ComandoGolpearBola(yoJugador,-120,-120);
            return comand;
        }
        else{
         ComandoGolpearBola comand= new ComandoGolpearBola(yoJugador,10,120);
            return comand;
        }
    }

}
